Components within a computer system are typically connected to each other using a bus. A first component communicates data to a second component by writing data to the bus. A second component then receives the data by reading the bus. Conventions exist that allow a given component to determine whether the data on the bus is destined for that component or for a different component. However, the physical architecture of many such busses is such that any component can connect to the bus, and can read the data off the bus—even if the data is not destined for that component. Thus, the bus provides an opportunity for snooping or modifying data, so the bus may not be appropriate for transmitting private data in the clear.
One context in which is it may be undesirable to place data on the bus is where the data could identify the user based on a unique hardware identifier. For reasons of privacy, many users are wary of unique hardware identifiers, and resist using hardware that employs such identifiers. However, some hardware components employ unique public/private key pairs in order to engage in encrypted communication. While identifying the user is not the primary purpose of the key pair, the public key is, in fact, substantially unique to the hardware and could be used for such an identifying purpose. Since the public key must be transmitted to the entity that will use the key to encrypt information, the transmission of the key over a bus provides an opportunity for this potentially identifying information to be divulged, and thus it is desirable to transmit the key by some means other than the bus so that the key cannot easily be intercepted.
Additionally, since the bus can be read and/or written by components that have access to the world outside of the computer of which the bus is a part (e.g., the bus can be written by network cards, that can communicate with components anywhere on the Internet), it is generally not possible to determine whether data on the bus originated from inside the computer or from a remote component. Thus, the fact that a computer is communicating with a component over the bus is generally not a very good basis to conclude that the component is located in physical proximity to the computer, since the component could be located remotely and placing data on the bus through the computer's network interface.
In view of the foregoing, there is a need for a system that overcomes the drawbacks of the prior art.